#ifndef __funcs__
#define __funcs__
class funcs: public object {
    Object arg;
    bool isset;
    Object get_first(Object);
    Object quote(Environment);
    Object define(Environment);
    Object plus(Environment);
    Object minus(Environment);
    Object mul(Environment);
    Object div(Environment);
    Object mod(Environment);
    Object equal(Environment);
    Object noteq(Environment);
    Object lss(Environment);
    Object gtr(Environment);
    Object lsseq(Environment);
    Object gtreq(Environment);
    Object apply(Environment);
    Object andopt(Environment);
    Object oropt(Environment);

public:
    funcs(std::string name): object(name, false), isset(false) { }
    void set_arg(Object obj) {
	arg = obj;
	isset = true;
    }
    Object eval(boost::shared_ptr<environment>);
    std::string get_type() { return "#<Built-in function>"; }
};
typedef boost::shared_ptr<funcs> Funcs;
#endif
